屏幕控制(LCD和触摸屏)
LCD显示显示bmp格式图片显示jpeg格式图片
触摸屏的使用
LCD显示
打开LCD屏幕 open需要包含的头文件
#include
#include
#include
int fd_lcd = open("/dev/fb0", O_RDWR);
建立映射,将LCD文件映射到一片内存 mmap需要包含的头文件
#include
unsigned int * plcd = mmap( NULL, //是否指定内存
heigh_lcd*width_lcd*4, //申请内存的大小
PROT_READ | PROT_WRITE, //申请内存的权限
MAP_SHARED, //内存是否共享
fd_lcd, //文件描述符
0); //偏移量
显示bmp格式图片
bmp格式的图片是没有经过压缩的的图片,所以打开的方式较为简单。
打开bmp图片
int fd_bmp = open("./pic.bmp", O_REWR);
将图片映射到一片内存
unsigned char * pbmp = mmap(NULL, //是否指定内存
heigh_bmp*width_bmp*3, //申请内存的大小
PROT_READ | PROT_WRITE, //申请内存的权限
MAP_SHARED, //内存是否共享
fd_bmp, //文件描述符
0); //偏移量
读取图片的数据,然后写入LCD
int x, y;
//逐行写入
for(y=0; y
//合成像素点
*(plcd + x + width*y) = (*(pbmp + 0 + 3*x + width*y)
//合成并显示像素点
*(plcd+y*800+x) = (*(buffer+0+3*x)
//触摸屏所需要的结构体
struct input_event ts_buf;
//记录读取的次数
int count = 0;
//2、读取触摸屏的数据
while(1){
read(fd_ts, &ts_buf, sizeof(ts_buf));
//获取x轴坐标值
if (ts_buf.type == EV_ABS && ts_buf.code == ABS_X){
count++;
//记录读到的x坐标的值
*ts_x = ts_buf.value;
}
//获取y轴坐标值
if (ts_buf.type == EV_ABS && ts_buf.code == ABS_Y){
count++;
//记录读到的y坐标的值
*ts_y = ts_buf.value;
}
if(2 == count){
printf("(%d, %d)\n", *ts_x, *ts_y);
//延时3000ms
usleep(3000);
count = 0;
break;
}
}
}
本文仅为学习笔记,欢迎纠错
|